<?php
/* SMILEY.INC.PHP by martin $ 2007/12/30 19:43:51
*/

checkADMIN();

$header = $body = '';

$smiley_ini = OD.'smiley.ini.php';

if(!@is_writable(PATH.SMILEY_DIR)){
 return $DIVISION['body'] .= '
 <p class="alert">ディレクトリ：<strong>'.PATH.SMILEY_DIR.'</strong><br /> の属性が書き込み可でないようです。<br />
 FTPソフトでパーミッションを７０７などに変えて下さい。</p>';
}

if(!@is_writable($smiley_ini)){
 return $DIVISION['body'] .= '
 <p class="alert">ファイル：<strong>'.OD.$smiley_ini.'</strong><br /> の属性が書き込み可でないようです。<br />
 FTPソフトでパーミッションを606などに変えて下さい。</p>';
}

if(p_('new_txt')!='' && $_FILES['new_img']['name']){              # スマイル追加
 if($mb){
  $encode = mb_detect_encoding(p_('hint'));
  $txt = mb_convert_encoding(p_('new_txt'), mb_internal_encoding(), $encode);
 } else {
  if(is_file(PATH.'jcode_wrapper.php')){
   include_once(PATH.'jcode_wrapper.php');
   $txt = jcode_convert_encoding(p_('new_txt'), ENCODE);
  }
 }
 $txt = preg_replace('{[\[/\]]}', '', $txt);
 $img = sanitize_data(SMILEY_DIR.$_FILES['new_img']['name']);
 $alt = p_('new_alt');
 if(move_uploaded_file($_FILES['new_img']['tmp_name'], PATH.$img)){
   showMessage('新しくスマイリーを追加しました');
 } 
 
 $_SMILIES["[$txt/]"] = '<img class="smiley" src="'.$img.'" alt="'.$alt.'" title="'.$txt.'" />';
 $input = '<?php $_SMILIES = array('.NL;
 foreach ($_SMILIES as $txt=>$img){
  $input .= '"'.$txt.'"=>\''.$img.'\','.NL;
 }
 $input .= ');?>';
 rewrite($smiley_ini, $input);
 make_js_fl();
}

if(p_('del')!=''){                         # スマイル削除
 $del = array_keys(p_('del')); $del = array_shift($del);
 $input = '<?php $_SMILIES = array('.NL;
 
 foreach ($_SMILIES as $txt=>$img){
  if(strstr($txt, "[$del/]")){
   $targetImg = preg_replace('|<img.+?src="([^"]+?)".+?/>|', '$1', $img);
   continue;
  }
  $input .= '\''.$txt.'\'=>\''.$img.'\','.NL;
 }
 $input .= ');?>';
 rewrite($smiley_ini, $input);
 make_js_fl();
 if(is_file(PATH.$targetImg)) unlink(PATH.$targetImg);
 showMessage('選択したスマイリーを削除しました');
}

if(v_('mode')=='smiley'){ # スマイリーの追加
 $body = '
 <style type="text/css">
 table#smiley-list { margin: 1em auto; border: solid 1px #aaa; background: #fff;}
 table#smiley-list tr.header { width: 150px; }
 </style>
 <h1>Always Smile Face :)</h1>
 <form method="post" action="admin.php?mode=smiley" enctype="multipart/form-data" style="width:560px;padding:1em;">
 <fieldset><legend>新しいスマイリーの追加</legend>
  <ul class="p2em" style="font-family:arial; width: 500px;">
   <li> 置換文字と画像ファイルを指定して，追加ボタンを押して下さい</li>
   <li> スマイリー画像のサイズは初期値は16px平方です。これはスタイルシートの<strong>img.smiley</strong>
   で指定しています</li>
   <li> 画像のALT属性はオプションです</li>
   <li> 置換文字は，実際のログでは，[あうち/] のように半角[/]で囲まれて表示されます</li>
  </ul>
  <div class="hidden">
   <input type="hidden" name="hint" value="あいうえお眉幅" />
   <input type="hidden" name="mode" value="smiley" />
   <input type="hidden" name="sub" value="add_smiley" />
  </div>
  <table style="width:420px; margin: auto;">
   <tr>
    <td class="rt">置換文字</td>
    <td class="lt"><input type="text" name="new_txt" value="" size="10" style="width:100px;" /></td>
   </tr>
   <tr>
    <td class="rt">画像ファイル</td>
    <td class="lt"><input type="file" name="new_img" size="20" style="width:200px;" /></td>
   </tr>
   <tr>
    <td class="rt">ALT属性(オプション)</td>
    <td class="lt"><input type="text" name="new_alt" size="10" style="width:100px;" /></td>
   </tr>
   <tr class="center">
   <td colspan="2" style="padding-top: 7px;">
    <input type="image" src="Images/add1.png"
     onmouseover="this.src=\'Images/add2.png\';"
     onmouseout="this.src=\'Images/add1.png\'" alt="Add" title="追 加" />
   </td>
   </tr>
  </table>
  
 ';
 
 $body .= '<div style="margin: 1em auto;">
  <p class="center" title="マウスクリックでon/off切り替え">
  <button type="button" onclick=\'o("#smiley-list").toggle();\'>
  登録スマイリー一覧
  </button></p>
  <table id="smiley-list" style="width: 200px;">
   <tr class="header"><th> スマイリー </th><th> 置換文字 </th><th> 削 除 </th></tr>
 ';
 foreach ($_SMILIES as $txt=>$img){
  $body .= '<tr><td>'.$img.'</td><td>'.$txt.'</td><td><input type="image" name="del['.preg_replace('/[\[\/\]]/', '', $txt).']" src="Images/trash.png" /></td></tr>'.NL;
 }
 $body .= '</table>
 </div>
 </fieldset>
 </form>'.NL;
 return $DIVISION['body'] .= $header.$body;
}

function make_js_fl(){ # make array and save to js directpry for javascript
 global $smiley_ini, $_SMILIES;
 include $smiley_ini;

 $s = "var smilies = {\n";  // JSON smiley
 if(isset($_SMILIES)){
  foreach ($_SMILIES as $key=>$val) {$s .= "'$key':'$val',\n";}
 }
 $s = preg_replace("/,\n$/", "\n", $s);
 $s .= "};";
 rewrite(PATH.OD.'smileyJSON.js', $s);
}

?>
